<?php

require_once '../application/business/TransactionBusiness.php';
require_once '../application/business/ClientBusiness.php';

class TransactionBusiness {

	public function newTransaction($data)
	{
		try {
			$db = Zend_Db_Table::getDefaultAdapter();

			$insert = $db->insert('cl_transaction', $data);
		} catch(Exception $e) {
			Zend_Registry::get('log')->info('newTransaction() Erro ao inserir transação'.$e);
		}

	}

	public function updateTransaction($data, $idTransaction)
	{
		try {
			$db = Zend_Db_Table::getDefaultAdapter();

			$where = $db->quoteInto('id_transaction = ?', $idTransaction);

			$db->update('cl_transaction', $data, $where);
			
		} catch(Exception $e) {
			Zend_Registry::get('log')->info('updateTransaction() Erro ao atualizar transação'.$e);
		}

	}

	public function saveProducts($data)
	{
		try {
			$db = Zend_Db_Table::getDefaultAdapter();

			$insert = $db->insert('cl_transaction_prod', $data);
		} catch(Exception $e) {
			Zend_Registry::get('log')->info('saveProducts() Erro ao inserir produtos para transação: '.$data['id_transaction'].' '.$e);
		}

	}

	public function savePaymentType($data){
		try {
			$db = Zend_Db_Table::getDefaultAdapter();

			$insert = $db->insert('cl_payment_type', $data);
		} catch(Exception $e) {
			Zend_Registry::get('log')->info('savePaymentType() Erro ao inserir tipo de pagamento para transação: '.$data['id_transaction'].' '.$e);
		}
	}

	public function saveTransactionAddress($data){
		try {
			$db = Zend_Db_Table::getDefaultAdapter();

			$insert = $db->insert('cl_transaction_address', $data);
		} catch(Exception $e) {
			Zend_Registry::get('log')->info('saveTransactionAddress() Erro ao inserir tipo de pagamento endereço para transação: '.$data['id_transaction'].' '.$e);
		}
	}

	public function saveCartMirror($data){
		try {
			$db = Zend_Db_Table::getDefaultAdapter();

			$insert = $db->insert('cl_cart_mirror', $data);
		} catch(Exception $e) {
			Zend_Registry::get('log')->info('saveCartMirror() Erro ao duplicar carrinho para transação: '.$data['id_transaction'].' '.$e);
		}
	}

	public function getTransactionById($idTransaction){
		try{

			$db = Zend_Db_Table::getDefaultAdapter();

			$select = $db->fetchAll("SELECT * FROM cl_transaction ct
			WHERE ct.id_transaction = '".$idTransaction."'");

			return $select;

		}catch (Exception $e){
			Zend_Registry::get('log')->info('getTransactionById() Erro ao recuperar transação: '.$idTransaction.' '.$e);
		}
	}

	public function getRequestByClient($idClient){
		try{

			$db = Zend_Db_Table::getDefaultAdapter();

			$select = $db->fetchAll("
			SELECT * FROM cl_transaction ct
			INNER JOIN tr_status ts
			on ts.id_status = ct.status
			WHERE ct.id_client = ?
			ORDER BY ct.date DESC
			", $idClient);

			return $select;

		}catch (Exception $e){
			Zend_Registry::get('log')->info('getRequestByClient() Erro ao recuperar pedidos para client: '.$idClient.' '.$e);
		}
	}

	public function getOpenTransaction(){
		try{

			$db = Zend_Db_Table::getDefaultAdapter();

			$select = $db->fetchAll("SELECT * FROM cl_transaction ct
			WHERE ct.status NOT IN (6, 7)");

			return $select;

		}catch (Exception $e){
			Zend_Registry::get('log')->info('getOpenTransaction() Erro ao recuperar transações abertas '.$e);
		}
	}

	public function getProductsByTransaction($idTransaction, $idClient){
		try{

			$db = Zend_Db_Table::getDefaultAdapter();

			$select = $db->fetchAll("SELECT distinct * FROM cl_transaction_prod ct
			inner join pr_product pr
			on pr.id_product = ct.id_product
			inner join cl_cart_mirror cm
			on cm.id_product = ct.id_product
			WHERE ct.id_transaction = '".$idTransaction."' 
			and cm.id_client = '".$idClient."' 
			and cm.id_transaction = '".$idTransaction."'");

			return $select;


		}catch (Exception $e){
			Zend_Registry::get('log')->info('getProductsByTransaction() Erro ao recuperar produtos da transação: '.$idTransaction.' '.$e);
		}
	}

}

